In existing computer networks, like the well known Advanced Research Projects Agency Network (ARPANET), an operator decides which application to run on which component of the computer network. Typically entire applications are placed on one server or in one data center.
Alternatively parts of applications may be run on different processors in multi core systems. In this case a measurement and control application decides which part of which application shall run on which processor.
Applications consist of computer programs that are executed on a computer. Said computer programs are for example stored on a storage on said computer.
Alternatively applications may consist of multiple computer programs that interact with each other to perform the task of the respective application. Said multiple computer programs may be stored on multiple non-volatile storages, e.g. on clients or on servers that are part of a computer network.
In the case of distributed storage locations for computer programs that belong to a single application, two scenarios are currently known:
In a first scenario a client computer receives said computer programs resembling a part of said application or said application entirely from one or several servers in said computer network and executes them. In this scenario said part of said application can only be executed on said client computer, if the formats of said computer programs that are received by said client computer are recognized by said client computer. To that end said client computer for example comprises a table of recognized or allowed computer programs and refuses to execute computer programs that are not listed in said table.
In a second scenario, a first part of said application, e.g. a first computer program, is stored on said client computer and executed by said client computer. One or more further parts of said application, e.g. one or several second computer programs, are executed on one or several servers upon a request from said client computer. For example one or several computer programs that are stored on said one or several servers are executed on the server that stores them. Interaction of the different parts of said application requires data transfer. Data transfer is only possible if said data format of the transferred data is known by the respective applications or parts of said application. To that end applications or parts of said application for example comprise a table of recognized or allowed formats of data and refuse to process data that is not listed in said table.
Additionally to the computer programs also the data that is processed by the computer programs may be stored in a single storage or on several storages in the computer network. In this case the data is handled similarly to the scenarios described above.
In any case the storage locations for the parts of the application, i.e. the computer programs, and the data that is processed by the application as well as the data formats for transfer and storage have to be known in advance by all applications or parts of the application, e.g. statically, or communicated between said applications or parts of said applications, dynamically.
To overcome restrictions imposed by potentially unknown formats, typically applications or parts of applications either comprise support for as many different formats as possible or only support a very limited number of formats.
In current computer networks neither the storage location nor the data formats can be adjusted to the network environment, e.g. available bandwidth or computing capacity, in real-time. This limits the flexibility of current computer networks.